-- @owner: xue-xinyi610
-- @date: 2025/2/20
-- @testpoint: I8XDZ2 禁用单个行级触发器后插入数据。，触发器未执行。。

-- 步骤pre1 清理旧表
DROP TABLE IF EXISTS test_table;

-- 步骤pre2 新建测试表
CREATE TABLE test_table (id1 INT, id2 INT, id3 INT);  

-- 步骤pre3 清理函数
DROP FUNCTION IF EXISTS test_function;

-- 步骤pre4 创建触发器函数
CREATE FUNCTION test_function() RETURNS TRIGGER AS
$$
BEGIN
  UPDATE test_table SET id2 = 5 WHERE id1 = 1;
  RETURN NEW;
END
$$ LANGUAGE PLPGSQL;/  

-- 步骤pre5 清理触发器
DROP TRIGGER IF EXISTS test_trigger ON test_table;

-- 步骤pre6 创建行级触发器
CREATE TRIGGER test_trigger
BEFORE INSERT ON test_table
FOR EACH ROW  -- 显式声明行级触发
EXECUTE PROCEDURE test_function();/  

-- 步骤pre7 初始启用
ALTER TABLE test_table ENABLE TRIGGER test_trigger;  

-- 步骤test1 禁用触发器
ALTER TABLE test_table DISABLE TRIGGER test_trigger; 

-- 验证执行效果
INSERT INTO test_table (id1) VALUES (1);
INSERT INTO test_table (id1) VALUES (1);
select * from test_table;
SELECT id2 FROM test_table WHERE id1 = 1;  -- 预期返回空  

-- 步骤post 清理对象
DROP TRIGGER test_trigger ON test_table;
DROP FUNCTION test_function;
DROP TABLE test_table;
